core2_vpmu_save_msr_context(v, type, index, msr_content);
if ( type != MSR_TYPE_GLOBAL )
{
- unsigned long mask;
+ u64 mask;
int inject_gp = 0;
switch ( type )
{
case MSR_TYPE_ARCH_CTRL: /* MSR_P6_EVNTSEL[0,...] */
- mask = ~((1L << 32) - 1);
+ mask = ~((1ull << 32) - 1);
if (msr_content & mask)
inject_gp = 1;
break;
case MSR_TYPE_CTRL: /* IA32_FIXED_CTR_CTRL */
/* 4 bits per counter, currently 3 fixed counters implemented. */
- mask = ~((1L << (3 * 4)) - 1);
+ mask = ~((1ull << (3 * 4)) - 1);
if (msr_content & mask)
inject_gp = 1;
break;
case MSR_TYPE_COUNTER: /* IA32_FIXED_CTR[0-2] */
- mask = ~((1L << core2_get_bitwidth_fix_count()) - 1);
+ mask = ~((1ull << core2_get_bitwidth_fix_count()) - 1);
if (msr_content & mask)
inject_gp = 1;
break;
static void tboot_copy_memory(unsigned char *va, uint32_t size,
unsigned long pa)
{
- uint32_t map_base;
- unsigned long map_addr;
- int i;
+ unsigned long map_base = 0;
+ unsigned char *map_addr = NULL;
+ unsigned int i;
- map_base = 0;
- for (i = 0; i < size; i++) {
- if ( map_base != PFN_DOWN(pa + i) ) {
+ for ( i = 0; i < size; i++ )
+ {
+ if ( map_base != PFN_DOWN(pa + i) )
+ {
map_base = PFN_DOWN(pa + i);
set_fixmap(FIX_TBOOT_MAP_ADDRESS, map_base << PAGE_SHIFT);
- map_addr = (unsigned long)fix_to_virt(FIX_TBOOT_MAP_ADDRESS);
+ map_addr = (unsigned char *)fix_to_virt(FIX_TBOOT_MAP_ADDRESS);
}
- *(va + i) = *(unsigned char *)(map_addr + pa + i
- - (map_base << PAGE_SHIFT));
+ va[i] = map_addr[pa + i - (map_base << PAGE_SHIFT)];
}
}